83.链表

您所在的位置:网站首页 ReWorks REDE添加头文件 83.链表

83.链表

2023-03-03 08:39| 来源: 网络整理| 查看: 265

链表

在发展2方法的基础上,不要一次性的分配n个指针的内存! 每次使用malloc为新的结构体分配内存空间时,也为指向该结构体的指针(新指针)分配内存。

但是,如果这样做的话,还需要另外一个指针跟来跟踪新分配的指针,因为使用malloc的返回值是一个指针,需要“另外一个指针”来跟踪新指针。那这“另外一个指针”也需要一个指针来跟踪,,以此类推,需要重新设计结构体才能解决该问题。

就是在每个结构体中要包含指向下一个结构体next的指针,当创建新结构时,把该结构的地址存储在上一个结构体中 (其中的指针)。

举例:

#define NAME_SIZE 20//人名字符大小 typedef struct peoplecard { char name[NAME_SIZE]; int age; peoplecard* next;//指向下一个结构体的指针 };

知识点: 结构不能含有与结构本身类型相同的结构,但是可以含有指向同类型结构的指针,这是链表的基础。链表的每一项都包含在何处能找到下一项结构体的信息(指针)。

在这里插入图片描述

举例: 用户输入人名为Tom,年龄为20,程序将为people_card 类型的结构体分配内存, 如果该结构体后面没有其他的结构体,程序需要把指向下一个结构体指针next设置为NULL。

因为第一个结构体是没有其他结构体的next记录的,所以还需要一个单独的结构体指针存储第一个结构体的地址,这个指针可以被称为头指针或根指针(head或root)。

重新设计数据结构,每个结构中都包含指向下一个结构体的指针,当创建新的结构体时,可以把该结构体的地址存储在上一个结构体的next指针中。

新设计的结构示意图如下: 在这里插入图片描述 数据结构实现示意图: 在这里插入图片描述 软件结构设计: 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3